#include "remotecontrolform.h"
#include "ui_remotecontrolform.h"
#include "totalcontrolform.h" // 假设需要访问TotalControlForm的stackedWidget

RemoteControlForm::RemoteControlForm(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::RemoteControlForm),
    isConnected(false),  // 初始未连接
    curtainState(false),    // 初始关闭
    humidifierState(false), // 初始关闭
    doorLockState(false)    // 初始关闭
{
    ui->setupUi(this);

    // 初始化标签
    ui->label_8->setText("网络未连接");
    ui->label_3->setText("网络未连接");

    // 初始化设备按钮文本（不设置样式，由setModeButtonsEnabled统一管理）
    ui->pushButton_7->setText("窗帘已关闭");
    ui->pushButton_8->setText("加湿器已关闭");
    ui->pushButton_9->setText("智能门锁已关闭");

    // 初始禁用所有功能按钮（网络未连接）
    setModeButtonsEnabled(false);

    // 确保"进入网络连接"按钮始终可用
    ui->pushButton_11->setEnabled(true);
    ui->pushButton_11->setStyleSheet(""); // 清除可能存在的禁用样式
}

RemoteControlForm::~RemoteControlForm()
{
    delete ui;
}

//"进入网络连接按钮"进入widget.ui（tcp网络连接界面）
void RemoteControlForm::on_pushButton_11_clicked()
{
    emit switchToWidget(); // 发射信号
}

// 更新连接状态并同步UI
void RemoteControlForm::updateConnectionStatus(QString status)
{
    ui->label_3->setText(status);

    // 更新连接状态标志
    isConnected = (status == "网络已连接");

    // 更新label_8显示
    if (isConnected)
    {
        ui->label_8->setText("网络已连接");
    }
    else
    {
        ui->label_8->setText("网络未连接");
    }

    // 更新按钮状态
    setModeButtonsEnabled(isConnected);
}

// 统一控制所有功能按钮的启用状态和颜色
void RemoteControlForm::setModeButtonsEnabled(bool enabled)
{
    // 定义禁用时的灰色样式
    const QString disabledStyle = "background-color: rgb(225, 227, 230); color: gray;";

    // 1. 模式按钮组（离家/归家/睡眠/起床）
    QList<QPushButton*> modeButtons = {
        ui->pushButton,    // 离家模式
        ui->pushButton_2,  // 归家模式
        ui->pushButton_3,  // 睡眠模式
        ui->pushButton_4   // 起床模式
    };

    // 2. 设备控制按钮组（空调/灯光/窗帘/加湿器/门锁）
    QList<QPushButton*> deviceButtons = {
        ui->pushButton_5,  // 空调遥控
        ui->pushButton_6,  // 灯光遥控
        ui->pushButton_7,  // 窗帘开关
        ui->pushButton_8,  // 加湿器开关
        ui->pushButton_9   // 智能门锁开关
    };

    // 批量处理模式按钮
    foreach (QPushButton* btn, modeButtons) {
        btn->setEnabled(enabled);
        btn->setStyleSheet(enabled ? "" : disabledStyle);
    }

    // 批量处理设备按钮
    foreach (QPushButton* btn, deviceButtons) {
        btn->setEnabled(enabled);
        if (enabled) {
            // 启用时，根据设备状态设置相应颜色
            if (btn == ui->pushButton_7) { // 窗帘
                btn->setStyleSheet(curtainState ? "background-color: green; color: white;" : "background-color: red; color: white;");
            } else if (btn == ui->pushButton_8) { // 加湿器
                btn->setStyleSheet(humidifierState ? "background-color: green; color: white;" : "background-color: red; color: white;");
            } else if (btn == ui->pushButton_9) { // 门锁
                btn->setStyleSheet(doorLockState ? "background-color: green; color: white;" : "background-color: red; color: white;");
            } else {
                // 空调和灯光按钮使用默认样式
                btn->setStyleSheet("");
            }
        } else {
            // 禁用时统一使用灰色样式
            btn->setStyleSheet(disabledStyle);
        }
    }

    // 确保"进入网络连接"按钮始终可用且样式正常
    ui->pushButton_11->setEnabled(true);
    ui->pushButton_11->setStyleSheet("");
}

//"空调遥控"进入pilot_signal.ui（空调遥控按钮界面）
void RemoteControlForm::on_pushButton_5_clicked()
{
    if (isConnected) {
        emit switchToPilotSignal();
    }
}

//"灯光遥控"按钮进入lamplight.ui（灯光遥控按钮界面）
void RemoteControlForm::on_pushButton_6_clicked()
{
    if (isConnected) {
        emit switchToLamplight();
    }
}

//离家模式按钮（发送1）
void RemoteControlForm::on_pushButton_clicked()
{
    if (isConnected) {
        emit sendCommand("离家模式启动");
    }
}

//归家模式按钮（发送2）
void RemoteControlForm::on_pushButton_2_clicked()
{
    if (isConnected) {
        emit sendCommand("归家模式启动");
    }
}

//睡眠模式按钮（发送3）
void RemoteControlForm::on_pushButton_3_clicked()
{
    if (isConnected) {
        emit sendCommand("睡眠模式启动");
    }
}

//起床模式按钮（发送4）
void RemoteControlForm::on_pushButton_4_clicked()
{
    if (isConnected) {
        emit sendCommand("起床模式按钮启动");
    }
}

// 窗帘开关按钮
void RemoteControlForm::on_pushButton_7_clicked()
{
    if (isConnected) {
        emit sendCommand("窗帘状态改变");
    }
}

// 加湿器开关按钮
void RemoteControlForm::on_pushButton_8_clicked()
{
    if (isConnected) {
        emit sendCommand("加湿器状态改变");
    }
}

// 智能门锁开关按钮
void RemoteControlForm::on_pushButton_9_clicked()
{
    if (isConnected) {
        emit sendCommand("智能门锁状态改变");
    }
}

//网络消息处理函数
void RemoteControlForm::onNetworkMessageReceived(QString message)
{
    // 模式消息处理
    QStringList targetMessages = {
        "离家模式已启动", "归家模式已启动",
        "睡眠模式已启动", "起床模式已启动"
    };
    if (targetMessages.contains(message)) {
        ui->label_8->setText(message);
    }

    // 设备状态处理
    if (message == "窗帘已开启") {
        curtainState = true;
        if (isConnected) {
            ui->pushButton_7->setText("窗帘已开启");
            ui->pushButton_7->setStyleSheet("background-color: green; color: white;");
        }
    }
    else if (message == "窗帘已关闭") {
        curtainState = false;
        if (isConnected) {
            ui->pushButton_7->setText("窗帘已关闭");
            ui->pushButton_7->setStyleSheet("background-color: red; color: white;");
        }
    }
    else if (message == "加湿器已开启") {
        humidifierState = true;
        if (isConnected) {
            ui->pushButton_8->setText("加湿器已开启");
            ui->pushButton_8->setStyleSheet("background-color: green; color: white;");
        }
    }
    else if (message == "加湿器已关闭") {
        humidifierState = false;
        if (isConnected) {
            ui->pushButton_8->setText("加湿器已关闭");
            ui->pushButton_8->setStyleSheet("background-color: red; color: white;");
        }
    }
    else if (message == "智能门锁已开启") {
        doorLockState = true;
        if (isConnected) {
            ui->pushButton_9->setText("智能门锁已开启");
            ui->pushButton_9->setStyleSheet("background-color: green; color: white;");
        }
    }
    else if (message == "智能门锁已关闭") {
        doorLockState = false;
        if (isConnected) {
            ui->pushButton_9->setText("智能门锁已关闭");
            ui->pushButton_9->setStyleSheet("background-color: red; color: white;");
        }
    }
}
